﻿#light

//let mynum  = (Int (Num.Int 5)) in 
//print_string_t ("Testing eval num: " ^(evalstep  mynum) ^ "\n");
//
//let variabl  = (Var "test") in 
//print_string_t ("Testing eval var:" ^(evalstep variabl) ^ "\n");
//
//let sequ  = (Seq [mynum; variabl]) in 
//let sequ_b = (Seq [T; F]) in  
//print_string_t ("Testing evals sequenc:e " ^(evalstep sequ) ^ "\n");
//
//let closure = App((Prim "not"), T) in
//print_string_t ("Testing evals App: " ^(evalstep closure) ^ "\n");
//
//let closure = App((ApplyToAll(Prim "not")), sequ) in
//print_string_t ("Testing evals ApplyToAll: " ^(evalstep closure) ^ "\n");
//
//let sel_closure = App(Sel 1, sequ) in
//print_string_t ("Testing evals selector: " ^(evalstep sel_closure) ^ "\n");
//
//let rsel_closure = App(Sel 1, sequ_b) in
//print_string_t ("Testing evals rselector: " ^(evalstep rsel_closure) ^ "\n");
//
//let sel_closure2 =  App(
//                        Composition(
//                                    Sel 1,
//                                    ApplyToAll(Prim "not")
//                                   ),
//                        sequ
//                        ) in
//print_string_t ("Testing evals composition: " ^(evalstep sel_closure2) ^ "\n");
//print_string_t ("Testing evals compositions step 2 :" ^ "\n");
//
//print_string_t ("TEST STEP Line: ");
//print_string_t ((step "eq o [ id, ~0] : 5") ^ "\n");
//print_string_t ("TEST STEP Line part 2: ");
//print_string_t ((step "eq:(< id:5, ~0:5 >)") ^ "\n");
//print_string_t ("TEST STEP Line part 3: ");
//print_string_t ((step "eq:(< 5, 0 >)") ^ "\n");
//
//step_by_step "eq o [ id, ~0] : 5";
